package com.wiz.web.service.impl;

import java.io.File;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.wiz.common.Constant;
import com.wiz.web.service.UpdateService;

@Service("updateService")
public class UpdateServiceImpl extends BasicServiceImpl implements UpdateService,Constant {

	/**
	 * SpringMVC中的文件上传
	 * 第一步：由于SpringMVC使用的是commons-fileupload实现，故将其组件引入项目中,这里用到的是
	 * commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar
	 * 第二步：在xml中配置MultipartResolver处理器。可在此加入对上传文件的属性限制
	 * 第三步：在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容
	 * 第四步：编写前台表单。注意enctype="multipart/form-data"以及<input type="file" name="****"/>
	 * 
	 * 如果只是上传一个文件，则只需要MultipartFile类型接收文件即可，而且无需显式指定@RequestParam注解
	 * 如果想上传多个文件，那么这里就要用MultipartFile[]类型来接收文件，并且还要指定@RequestParam注解
	 * 并且上传多个文件时，前台表单中的所有<input
	 * type="file"/>的name都应该是myfiles，否则参数里的myfiles无法获取到所有上传的文件
	 */
	@Override
	public String updateAdminGroupFile(MultipartFile myfile, String stationId,HttpServletRequest request) {
		try{
	        String saveFiledir="";
		    if(!myfile.isEmpty()){ 
//		    	if(myfile.getSize()>200*1024){//字节大小 200K
//		    		return returnResult(SYSTEM_DEFINED_RESULT_CODE,"文件过大，无法上传",null);
//		    	}
		    	saveFiledir = String.format(UPDATE_ADMIN_GROUP_FILE_URL, stationId);
		        File uploadDir = new File(saveFiledir);
    	        if(!uploadDir.exists()){
    	            if(!uploadDir.mkdirs()){
    	                return RESPONSE_CODE_SERVER_ERROR;
    	            }
    	        }
		        //这里不必处理IO流关闭的问题，因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
    	        File uploadFile = new File(saveFiledir, myfile.getOriginalFilename());
		        FileUtils.copyInputStreamToFile(myfile.getInputStream(), uploadFile); 
		        if(!new File(saveFiledir+myfile.getOriginalFilename()).exists()){
		        	return RESPONSE_CODE_SERVER_ERROR;
		        }
	        }else{
	        	return returnResult(500,"文件内容不符合标准，请重新上传",null);
	        }
			return RESPONSE_CODE_OK;
		}catch(Exception e){
			e.printStackTrace();
			return RESPONSE_CODE_SERVER_ERROR;
		}
	}

}
